package cn.iocoder.yudao.module.ems.service.eqtype;

import java.util.*;
import javax.validation.*;

import cn.hutool.core.collection.CollUtil;
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
import cn.iocoder.yudao.module.ems.controller.admin.eqtype.vo.*;
import cn.iocoder.yudao.module.ems.dal.dataobject.eqtype.EqTypeDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;

/**
 * 设备类别 Service 接口
 *
 * @author 左达成
 */
public interface EqTypeService {

    /**
     * 创建设备类别
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createEqType(@Valid EqTypeCreateReqVO createReqVO);

    /**
     * 更新设备类别
     *
     * @param updateReqVO 更新信息
     */
    void updateEqType(@Valid EqTypeUpdateReqVO updateReqVO);

    /**
     * 删除设备类别
     *
     * @param id 编号
     */
    void deleteEqType(Long id);

    /**
     * 获得设备类别
     *
     * @param id 编号
     * @return 设备类别
     */
    EqTypeDO getEqType(Long id);

    /**
     * 获得设备类别列表
     *
     * @param ids 编号
     * @return 设备类别列表
     */
    List<EqTypeDO> getEqTypeList(Collection<Long> ids);

    /**
     * 获得设备类别分页
     *
     * @param pageReqVO 分页查询
     * @return 设备类别分页
     */
    PageResult<EqTypeDO> getEqTypePage(EqTypePageReqVO pageReqVO);

    /**
     * 获得设备类别列表, 用于 Excel 导出
     *
     * @param exportReqVO 查询条件
     * @return 设备类别列表
     */
    List<EqTypeDO> getEqTypeList(EqTypeExportReqVO exportReqVO);

    List<EqTypeDO> getSimpleEqTypes(Collection<Long> ids);
    /**
     * 筛选设备类别列表
     *
     * @param reqVO 筛选条件请求 VO
     * @return 设备类别列表
     */
    List<EqTypeDO> getSimpleEqTypes(EqTypeListReqVO reqVO);

    default Map<Long, EqTypeDO> getEqTypeMap(Collection<Long> ids) {
        if (CollUtil.isEmpty(ids)) {
            return Collections.emptyMap();
        }
        List<EqTypeDO> list = getSimpleEqTypes(ids);
        return CollectionUtils.convertMap(list, EqTypeDO::getId);
    }


}
